package lab2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.NoSuchElementException;

public class MyMain {

	/**
	 * проверка работы разработанной структуры TreeSet
	 * @param args путь к входному файлу т путь к выходному файлу
	 */
	public static void main(String args[ ]) 
	{ 
		 
		MyTreeSet myTreeSet1=new MyTreeSet();	
		BufferedReader reader = null;
		
	    try {
	    	File input = new File("C://input.txt");
	    	File output = new File("C://output.txt");
	    	 if(!output.exists()){
	    		 output.createNewFile();
	         }
	    	try {
	    		reader = new BufferedReader(new InputStreamReader(new FileInputStream(input)));
	    	} catch (FileNotFoundException e1) {
	    		System.err.println("Входной файл не найден");
	    		System.exit(0);
	    	}
	    	PrintWriter writer = new PrintWriter(output.getAbsoluteFile());
    		String line;
    		String s[];
	        while ((line = reader.readLine()) != null) {
	        	
				s=line.split(" ");
				switch(s[0]) {
				case "isEmpty": writer.print("Является ли дерево пустым: " + myTreeSet1.isEmpty() + "\n"); 
								break;
				case "remove":  try {
									int i=Integer.parseInt(s[1]);
									writer.print(myTreeSet1.remove(i)+"\n");
								 } catch (NumberFormatException e) {  
							        System.err.println("Неверный формат строки!");   
								 } catch (NullPointerException e) {
								 	System.err.println("Ошибка - входное значение не может быть равно null " + e);
							 	 }
								 break;
				case "add": 	 writer.print("Успешно ли внесен узел:"); 
								 try {
									int i=Integer.parseInt(s[1]);
									writer.print(myTreeSet1.add(i)+"\n");
								 } catch (NumberFormatException e) {  
									 System.err.println("Неверный формат строки!");   
								 } catch (NullPointerException e) {
									 System.err.println("Ошибка - входное значение не может быть равно null " + e);
								 }
								 break;
				case "size": 	 writer.print("Количество элементов в дереве = " + myTreeSet1.size() + "\n");
								 break;
				case "contains": try {
									int i=Integer.parseInt(s[1]);
									writer.print("Содержит ли дерево число " + i);
									writer.print(myTreeSet1.contains(i)+"\n"); 
								 } catch (NumberFormatException e) {  
									System.err.println("Неверный формат строки!");  	
								 } catch (NullPointerException e) {
									System.err.println("Ошибка - входное значение не может быть равно null " + e);
							 	 }
								 break;
				case "toString": writer.print("Вывод дерева в виде строки: " + myTreeSet1.toString() + "\n");
								 break;
				case "iterator": writer.print("Вывод элементов с помощью итератора:"); 
								 Iterator<Integer> iter=myTreeSet1.iterator();
								 if (iter!=null) {
									 try {
										 while (iter.hasNext()) {
											 writer.print(iter.next()+" "); 
										 }
										 writer.print("\n");
									 } catch (NoSuchElementException e) {
										 System.err.println("Ошибка итератора - выход за пределы дерева " + e);
									 }
								 }
								 break;
				case "clear":    writer.print("Очистка дерева."); 
							     myTreeSet1.clear();
							     break;
				 default:		 System.err.println("Неверная комманда"); 
				 				 break;
		
	        }
		
		
	        }
	
		reader.close();
		writer.close();
	    } catch (IOException e) {
	    	System.err.println("Не возможно закрыть файл "+e);
	    }
		
     } 
	
	
 
}
